#ifndef __W25Q64_H
#define __W25Q64_H
void W25Q64_Init(void);

/**
* @brief  读取厂商ID和设备ID，用于验证底层代码书写正确
	* @param  MID、DID: 分别为主函数中存储厂商ID和设备ID的变量的地址，通过传址调用将它们的值返回
	* @retval None
  */
void W25Q64_ReadID(uint8_t* MID, uint16_t *DID);

/**
* @brief  页编程。一页至多写入256字节的数据，无论是从头开始写256字节数据，还是从一页中间开始写，没写够256字节就到结尾了，多的都会从该页起始地址开始覆盖。
	* @param  Address：写入地址
	* @param  DataArray[]：存储着待写入数据的数组
	* @param  count：写入数据数量（0至256）
	* @retval None
  */
void W25Q64_PageProgram(uint32_t Address, uint8_t DataArray[], uint16_t count);

/**
* @brief  扇区擦除
	* @param  Address：所在扇区将会全部被擦除
	* @retval None
  */
void W25Q64_SectorErase(uint32_t Address);

/**
* @brief  读数据
	* @param  Address：读出地址
	* @param  DataArray[]：存储着读出的数据的数组
	* @param  count：写入数据数量，没有页的限制，可以一直读到内存溢出，该数量是可能非常大的
	* @retval None
  */
void W25Q64_ReadData(uint32_t Address, uint8_t DataArray[], uint32_t count);
#endif
